package cn.txauction.common;

import java.text.SimpleDateFormat;
import java.util.Date;

import cn.txauction.common.exception.TxRuntimeException;


public class AppUtils {
	
	/**
	 * 处理sql语句中的参数数组，避免将无效的值插入到数据库中。
	 * 处理1：空字串转为null
	 * 处理2：long型值通常是主键或外键，如果为0则转为null
	 * 处理3：int型值通常是字典数据，如果为0则转为null
	 * @param args
	 * @return
	 */
	public static Object[] dealArgs(Object[] args){
		for(Object value: args){
			if (value!=null && value.getClass().getName().equals(Long.class.getName()) && ((Long)(value)).longValue()==0){
				value = null;
			}
			if (value!=null && value.getClass().getName().equals(Integer.class.getName()) && ((Integer)(value)).intValue()==0){
				value = null;
			}
			if (value!=null && value.getClass().getName().equals(String.class.getName()) && ((String)(value)).equals("")){
				value = null;
			}
//			if (value!=null && value.getClass().getName().equals(Date.class.getName())){
//				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//				value = sdf.format(value);
//			}
		}
		return args;
	}

//	public static String createSqlByCondition(String sql,
//			Map<String, Object> conditionMap) {
//		if(conditionMap == null){
//			return sql;
//		}
//		StringBuffer sb = new StringBuffer(sql + " Where");
//		Object[] strCons = (Object[])conditionMap.get(AppKeys.CONDITION);
//		for (Object con : strCons) {
//			sb.append(" " + con + "=? and");
//		}
//		String rsql = sb.toString();
//		return rsql.substring(0,rsql.length()-3);
//	}
	
	/**
	 * 日期比较
	 * @param date1
	 * @param date2
	 * @return 1: 1>2  2: 1<2 3: 1=2 
	 * @throws TxRuntimeException
	 */
	public static int compareDate(Date date1, Date date2){
		long l1 = date1.getTime();
		long l2 = date2.getTime();
		if(l1 > l2)
			return 1;
		if(l1 < l2)
			return 2;
		return 0;
	}
	
	/**
	 * 
	 * @param date1
	 * @param date2
	 * @return 1: 1>2  2: 1<2 3: 1=2 
	 * @throws TxRuntimeException
	 */
	public static int compareDate(String date1, String date2) throws TxRuntimeException{
		try {
			SimpleDateFormat parseTime = new SimpleDateFormat(
					"yyyy-MM-dd hh:mm:ss");
			Date d1 = parseTime.parse(date1);
			Date d2 = parseTime.parse(date2);
			long l1 = d1.getTime();
			long l2 = d2.getTime();
			if(l1 > l2)
				return 1;
			if(l1 < l2)
				return 2;
			return 0;
			
		} catch (Exception e) {
			throw new TxRuntimeException(e);
		}

	}
}
